<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Math方法</title>
</head>

<body>
    <script>
        // 静态属性
        Math.E          //常数e。
        Math.LN2        //2 的自然对数。
        Math.LN10       //10 的自然对数。
        Math.LOG2E      //以 2 为底的e的对数。
        Math.LOG10E     //以 10 为底的e的对数。
        Math.PI         //常数 PI。
        Math.SQRT1_2    //0.5 的平方根。
        Math.SQRT2      //2 的平方根。


        // 静态方法
        // Math.abs()返回参数绝对值
        Math.abs(-1) //1

        // Math.max()方法返回参数之中最大的那个值
        // Math.min()返回最小的那个值。
        // 如果参数为空, Math.min返回Infinity, Math.max返回-Infinity。
        Math.max(-1, 1, 2, 34)  //34
        Math.min(-1, 1, 2, 34)  //-1

        // Math.floor()方法返回小于参数值的最大整数-->向下取整
        // Math.ceil()方法返回大于参数值的最小整数-->向上取整
        Math.floor(-1.22)  //-2
        Math.ceil(-1.22)   //-1

        // Math.round()方法用于四舍五入
        Math.round(1.234)   //1

        // Math.sqrt()方法返回参数值的平方根。如果参数是一个负值，则返回NaN
        Math.sqrt(4)    //2

        // Math.random()返回0到1之间的一个伪随机数，可能等于0，但是一定小于1
        Math.random()   //0.8307286564581284-->随机

        console.log(Math.random());


        // es6新增
        // Math.trunc()方法用于去除一个数的小数部分，返回整数部分

        // Math.cbrt()方法用于计算一个数的立方根

        // Array.of()方法用于将一组值，转换为数组

        // ES6 提供三个新的方法——entries()，keys()和values()——用于遍历数组。可以用for...of循环进行遍历，唯一的区别是
        // keys()是对键名的遍历
        // values()是对键值的遍历
        // entries()是对键值对的遍历
        for (let index of ['a', 'b'].keys()) {
            console.log(index);
        }
        // 0
        // 1

        for (let elem of ['a', 'b'].values()) {
            console.log(elem);
        }
        // 'a'
        // 'b'

        for (let [index, elem] of ['a', 'b'].entries()) {
            console.log(index, elem);
        }
        // 0 "a"
        // 1 "b"

        // flat()用于将嵌套的数组“拉平”，变成一维的数组。该方法返回一个新数组，对原数据没有影响。
        // flat()默认只会“拉平”一层，如果想要“拉平”多层的嵌套数组，可以将flat()方法的参数写成一个整数，表示想要拉平的层数，默认为1
        [1, 2, [3, [4, 5]]].flat(2)    // [1, 2, 3, 4, 5]

        // at()方法接受一个整数作为参数，返回参数指定位置的字符，支持负索引（即倒数的位置）。
        
    </script>
</body>

</html>